package com.easygem.front.service;

import com.easygem.common.model.front.CallLog;
import com.easygem.common.model.front.ResourceInfo;

import java.util.Map;

/**
 * @author 廖思炜
 * @version 1.0
 * @className CallService
 * @Description TODO 通话接口服务层接口
 * @date 2025/2/18 8:52
 */
public interface CallService {
    /**
     * 根据账户名得到中间号
     * @param userId
     * @return
     */
    String getBindNbrById(Long userId);
    /**
     * 根据账户名得到应用key
     * @param accountName
     * @return
     */
    String getAppIdByName(String accountName);
    /**
     * 根据账户名得到应用秘钥
     * @param accountName
     * @return
     */
    String getAppSecretByName(String accountName);
    /**
     * 根据账户名得到绑定唯一id
     * @param accountName
     * @return
     */
    String getSessionId(String accountName);
    /**
     * 检查sessionId是否存在
     * @param sessionId
     * @return
     */
    Integer checkSessionId(String sessionId);

    /**
     * 检查是否存在于资源
     * @param phone
     * @return
     */
    Integer checkResource(String phone);

    /**
     * 检查是否存在于资源并且有效
     *
     * @param phone
     * @return
     */
    Integer checkResourceB(String phone);

    /**
     * 保存日志
     * @param callLog
     * @return
     */
    Integer saveLog(CallLog callLog);

    /**
     * 话单推送回调
     * @param callLog
     * @return
     */
    Integer callBackSaveLog(CallLog callLog);

    /**
     * 根据账户得到当前账户的资费情况
     * @param userId
     * @return
     */
    Double getTariffByUserId(Long userId);

    /**
     * 根据通话记录sessionId得到当前这一条记录的资费情况
     * @param sessionId
     * @return
     */
    Double getTariffBySessionId(String sessionId);

    /**
     * 将当前拨打号码的账户拨打号码数+1，将修改时间与最后呼叫时间更新
     * @return
     */
    Integer updatedAccountCallNum();


    /**
     * 将当前拨打的资源更新是否拨打状态，将修改时间与最后呼叫时间更新
     * @param map
     * @return
     */
    Integer updatedResourceCallInfo(Map<String,Object> map);
    /**
     *
     * @param phoneA
     * @return
     */
    ResourceInfo selectResourceNameByPhoneA(String phoneA);

    /**
     *
     * @param phoneB
     * @return
     */
    ResourceInfo selectResourceNameByPhoneB(String phoneB);
}
